/*
https://flutter.cn/docs/get-started/flutter-for/android-devs

如何在布局中添加或删除一个组件？
在 Android 中，你通过调用父 View 的 addChild() 或 removeChild() 方法动态地添加或者删除子 View。在 Flutter 中，由于 Widget 是不可变的，所以没有 addChild() 的直接对应的方法。不过，你可以给返回一个 Widget 的父 Widget 传入一个方法，并通过布尔标记值控制子 Widget 的创建。

例如，下面就是你可以如何在点击一个 FloatingActionButton 时在两个 widget 之间切换。


 */

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main(){
  runApp(const SampleApp());
}

class SampleApp extends StatelessWidget{
  const SampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sample App',
      theme: ThemeData(
        primarySwatch: Colors.blue
      ),
      home: const SampleAppPage(),
    );
  }
}

class SampleAppPage extends StatefulWidget{
  const SampleAppPage({super.key});
  @override
  State<StatefulWidget> createState() => _SampleAppPageState();
}

class _SampleAppPageState extends State<SampleAppPage>{
  bool toggle = true;
  void _toggle(){
    setState(() {
      toggle = !toggle;
    });
  }

  Widget _getToggleChild(){
    if(toggle){
      return const Text('Toggle One');
    }else {
      return ElevatedButton(onPressed: (){}, child: const Text('Toggle Two'));
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('在布局中添加或删除一个组件')),
      body: Center(
        child: _getToggleChild(),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _toggle,
        tooltip: 'Update Text',
        child: const Icon(Icons.update),

      ),
    );

  }
}



